using System.Collections.Generic;
using System.ComponentModel;
using ZoneFiveSoftware.Common.Data.Fitness;

namespace FilteredStatistics.Common
{
    // Implement all the functions in this interface and register that object in the
    //  IFilterCriteriaProvider.RegisterFilterCriteriaProvider.  A proxy object will
    //  be created from the passed object in order to call the right functions using
    //  reflection
    public interface IFilterCriteriaProvider
    {
        // This function returns a list of object that implement the IFilterCriteria
        //  interface.  Proxy objects will be created from the objects in this list
        //  in order to call the right functions using reflection
        IList<object> GetFilterCriterias(ILogbook logbook);

        // Trigger this event when your list of FilterCriterias has changed.  This
        //  will trigger a call to the FilterCriterias property that shoudl return
        //  the updated list
        event PropertyChangedEventHandler FilterCriteriasChanged;
    }
}
